package com.shujia.scala

object Demo14ScalaFunc3 {
  def main(args: Array[String]): Unit = {
    // 函数作为参数的运用
    val array: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

    // 对array中的每一个元素进行 +1
    var index = 0
    while (index < array.length) {

      val originalValue: Int = array(index) // 取出原有的值
      val newValue: Int = originalValue + 1 // +1
      array(index) = newValue // 将新的值重新赋给array(index)

      index += 1
    }
    // 按照指定的分隔符 将 array中的所有元素进行拼接并输出
    println(array.mkString(","))

    // 对array中的每一个元素进行 +2
    var index1 = 0
    while (index1 < array.length) {

      array(index1) += 2

      index1 += 1
    }
    // 按照指定的分隔符 将 array中的所有元素进行拼接并输出
    println(array.mkString(","))

    // Java的思想：用while循环做
    // Scala 的思想：用函数式编程来做
    // map方法可以传入一个函数f，会将f作用在array中的每一个元素上，最后会返回一个新的array
    val newArray: Array[Int] = array.map(add1)
    println(newArray.mkString(","))

    val newArray1: Array[Int] = array.map(add2)
    println(newArray1.mkString(","))

    // 使用匿名函数
    val newArray2: Array[Int] = array.map(_ + 1)
    println(newArray2.mkString(","))

    val newArray3: Array[Int] = array.map(_ + 2)
    println(newArray3.mkString(","))
  }

  def add1(i: Int): Int = {
    i + 1
  }

  def add2(i: Int): Int = {
    i + 2
  }

}
